package com.daigg.hoteladmin.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.daigg.hoteladmin.pojo.po.HotelPO;
import com.daigg.hoteladmin.pojo.vo.HotelVO;
import com.daigg.hoteladmin.service.IHotelService;
import com.daigg.hoteladmin.tools.Reply;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;

/**
 * 酒店Controller
 * @author daiyang
 */
@Slf4j

@Api(tags="02.酒店相关接口")
@RestController
@RequestMapping("api/hotel")
public class HotelController {
    @Autowired
    IHotelService hotelService;

    public HotelController(){
        log.debug("创建控制器对象：HotelController");
    }


    @ApiOperation("添加酒店")
    @ApiOperationSupport(order = 100)
    @PostMapping("/add")
    public Reply<Void> add(@Valid @RequestBody HotelVO hotelVO){
        log.debug("开始处理【添加酒店】请求，参数：{}", hotelVO);
        hotelService.add(hotelVO);
        log.debug("处理【添加酒店】请求成功");
        return Reply.success();
    }


    @ApiOperation("删除酒店")
    @ApiOperationSupport(order = 200)
    @PostMapping("/delete/{id:[0-9]+}")
    public Reply<Integer> deleteById(@PathVariable("id") String id){
        log.debug("开始处理【删除酒店】请求，参数：{}", id);
        hotelService.deleteById(id);
        log.debug("处理【删除酒店】请求成功,参数：{}", id);
        return Reply.success();
    }

    @PostMapping("/modify")
    @ApiOperation("更改酒店")
    @ApiOperationSupport(order = 300)
    public Reply<HotelVO> modify(@RequestBody @Valid HotelVO hotelVO){
        log.debug("开始处理【更改酒店】请求，参数：{}", hotelVO);
        hotelService.updateById(hotelVO);
        log.debug("处理【更改酒店】请求成功,参数：{}", hotelVO);
        return Reply.success();
    }

    @GetMapping("/get/{id}")
    @ApiOperation("根据id获取酒店")
    public Reply<HotelVO> getById(@PathVariable("id") String id) {
        log.debug("开始处理【根据id获取酒店】请求，参数：{}", id);
        HotelVO hotelVO = hotelService.selectOneByIdReturnVO(id);
        log.debug("处理【根据id获取酒店】请求成功,参数：{}", id);
        return Reply.success(hotelVO);
    }

    @ApiOperation("查询酒店列表(分页)-暂未实现")
    @PostMapping("/page")
    public Reply<Page<HotelVO>> getPage(@RequestBody HotelVO hotelVO) {
        log.debug("开始处理【查询酒店列表(分页)-暂未实现】请求，参数：{}", hotelVO);
        Page<HotelVO> page = hotelService.getPage(hotelVO);
        log.debug("处理【查询酒店列表(分页)-暂未实现】请求成功,参数：{}", hotelVO);
        return Reply.success(page);
    }

    @ApiOperation("查询酒店列表")
    @GetMapping("/list")
    public Reply<List<HotelPO>> list() {
        log.debug("开始处理【查询酒店列表】请求");
        List<HotelPO> list = hotelService.list();
        log.debug("处理【查询酒店列表】请求成功");
        return Reply.success(list);
    }


}
